home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection Student Program / ADC Tools Sampler CD Disk 3 1999.iso / Cool Demos, SDKs, & Tools / Demos⁄Tools⁄Offers / Eiffel for CW beta 3 / EiffelS2 / LIBRARY / MOTEL / Windows.c < prev   
Text File  |  1999-05-28  |  4KB  |  139 lines

  1. /*------------------------------------------------------------------*/
  2. /* Eiffel/S II MacOS Runtime                                         */
  3. /*------------------------------------------------------------------*/
  4. /* Author    : Ian Joyner                                               */
  5. /* Release   : 1.0                                                  */
  6. /* Date      : Dec. 1997                                            */
  7. /* Copyright : Ian Joyner                                            */
  8. /*------------------------------------------------------------------*/
  9. /********************************************************************/
  10. /*                                                                    */
  11. /*                                WINDOWs                                */
  12. /*                                                                    */
  13. /********************************************************************/
  14.  
  15. #include <Windows.h>
  16. #include <Controls.h>
  17. #include <ToolUtils.h>
  18. #include <Eiffel2.h>
  19. #include "MOTEL.h"
  20.  
  21. INTEGER platform_window_port_size ()
  22. {
  23.     CWindowRecord p;
  24.     
  25.     return (sizeof (p));
  26. }
  27.  
  28. WindowPtr platform_new_window (void *wStorage, INTEGER left, INTEGER top, INTEGER right, INTEGER bottom,
  29.                          ConstStr255Param title, Boolean visible,
  30.                          INTEGER procID, WindowPtr behind,
  31.                          Boolean goAwayFlag, INTEGER refCon)    
  32. {
  33.     Rect bounds_rect;
  34.     Str255 scratch;
  35.     
  36.     SetRect (&bounds_rect, left, top, right, bottom);
  37.     
  38.     strcpy (scratch, title);
  39.     c2pstr ((char *)scratch); /* This might not be right if string is loaded from a resource */
  40.     
  41.     return NewCWindow (wStorage, &bounds_rect, scratch, visible, procID, behind,
  42.                        goAwayFlag, refCon);
  43. }
  44.  
  45. WindowPtr platform_get_new_window (INTEGER windowID, void *wStorage,  WindowPtr behind)
  46. {
  47.     return GetNewCWindow (windowID, wStorage, behind);
  48. }
  49.  
  50. POINTER platform_window_get_title (WindowPtr w)
  51. {
  52.     GetWTitle (w, &scratch_string);
  53.     p2cstr ((char *)scratch_string);
  54.     
  55.     return &scratch_string;
  56. }
  57.  
  58. void platform_window_set_title (WindowPtr w, ConstStr255Param title)
  59. {
  60.     Str255 scratch;
  61.     
  62.     strcpy (scratch, title);
  63.     c2pstr ((char *)scratch); /* This might not be right if string is loaded from a resource */
  64.     SetWTitle (w, scratch);
  65. }
  66.  
  67. void platform_set_ref_con (WindowPtr w, INTEGER eiffel_object)
  68. {
  69.     SetWRefCon (w, eiffel_object);
  70. }
  71.  
  72. void platform_window_drag (WindowPtr w, INTEGER x, INTEGER y, INTEGER left, INTEGER top, INTEGER right, INTEGER bottom)    
  73. {
  74.     Rect bounds_rect;
  75.     Point p;
  76.  
  77.     SetPt (&p, x, y);
  78.     SetRect (&bounds_rect, left, top, right, bottom);
  79.     
  80.     DragWindow (w, p, &bounds_rect);
  81. }
  82.  
  83. void platform_window_grow (WindowPtr w, INTEGER x, INTEGER y)    
  84. {
  85.     long grow_size;
  86.     Rect limit_rect;
  87.     Point p;
  88.     int kMinDocSize = 64;
  89.     int kMaxDocSize = 32767;
  90.  
  91.     SetPt (&p, x, y);
  92.     SetRect (&limit_rect, kMinDocSize, kMinDocSize, kMaxDocSize, kMaxDocSize);
  93.     
  94.     grow_size = GrowWindow (w, p, &limit_rect);
  95.     
  96.     if (grow_size != 0)
  97.     {
  98.         SizeWindow (w, LoWord (grow_size), HiWord (grow_size), true);
  99.     }
  100. }
  101.  
  102. BOOLEAN platform_window_track_go_away (WindowPtr w, INTEGER x, INTEGER y)    
  103. {
  104.     Point p;
  105.  
  106.     SetPt (&p, x, y);
  107.     
  108.     return TrackGoAway (w, p);
  109. }
  110.  
  111. BOOLEAN platform_window_track_box (WindowPtr w, INTEGER mouse_loc, INTEGER x, INTEGER y)    
  112. {
  113.     Point p;
  114.  
  115.     SetPt (&p, x, y);
  116.     
  117.     return TrackBox (w, p, mouse_loc);
  118. }
  119.  
  120. void platform_window_zoom (WindowPtr w, INTEGER mouse_loc, BOOLEAN front)    
  121. {
  122.     ZoomWindow (w, mouse_loc, front);
  123. }
  124.  
  125. INTEGER platform_find_control (WindowPtr w, INTEGER x, INTEGER y, INTEGER *control)    
  126. {
  127.     INTEGER part;
  128.     ControlHandle which_control;
  129.     Point p;
  130.     
  131.     SetPt (&p, x, y);
  132.     part = FindControl (p, w, &which_control);
  133.     
  134.     if (part != 0)
  135.         *control = GetControlReference (which_control);
  136.  
  137.     return part;
  138. }
  139.